package com.enjoyor.soa.traffic.api.service.dubbo.efms;

import com.enjoyor.soa.traffic.api.service.dto.IssuInfoDto;
import com.enjoyor.soa.traffic.api.service.dto.OprRecordInfoDto;
import com.enjoyor.soa.traffic.api.service.dto.OtherDeviceInfoDto;
import com.enjoyor.soa.traffic.util.pojo.Page;
import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

public interface DubboOtherDeviceInfoService {

	/**
	 * 
	* @Title: getPageDeviceInfo 
	* @Description: TODO(分页获取其他设备对象) 
	* @param deviceCode 设备编码
	* @param deviceClass 设备类别
	* @param deviceType 设备类型
	* @param adminDepartment 管理部门编码
	* @param localDepartment 所在部门编码
	* @param usageDepartment 使用部门编码
	* @param usageState 使用状态
	* @param manufacturer 设备厂家
	* @param personId 使用人员
	* @param orderSeq 排序字符串
	* @param page 分页对象
	* @return page 分页对象
	* @throws
	 */
	@SuppressWarnings("rawtypes")
	public ResultPojo getPageDeviceInfo(String deviceCode, String deviceClass,
			String deviceType,String adminDepartment, String usageDepartment, String localDepartment,
			String usageState,String manufacturer, String personId,String orderSeq, Page page);

	/**
	* @Title: getDeviceInfo 
	* @Description: TODO(获取其他设备对象列表) 
	* @Description: TODO(分页获取其他设备对象) 
	* @param deviceCode 设备编码
	* @param deviceClass 设备类别
	* @param deviceType 设备类型
	* @param adminDepartment 管理部门编码
	* @param localDepartment 所在部门编码
	* @param usageDepartment 使用部门编码
	* @param usageState 使用状态
	* @param manufacturer 设备厂家
	* @param personId 使用人员
	* @param orderSeq 排序字符串
	* @return List<OtherDeviceInfoPojo>
	* @throws
	 */
	public ResultPojo getDeviceInfo(String deviceCode, String deviceClass,
			String deviceType,String adminDepartment, String usageDepartment, String localDepartment,
			String usageState,String manufacturer, String personId,String orderSeq);


	/**
	* @Title: addDeviceInfo 
	* @Description: TODO(添加其他装备基础信息，返回数据库插入受影响行数) 
	* @param dto 其他装备基础信息对象
	* @param userName 操作用户名
	* @return int
	* @throws
	 */
	public ResultPojo addDeviceInfo(OtherDeviceInfoDto dto, String token,String userName);

	/**
	* @Title: editDeviceInfo 
	* @Description: TODO(编辑其他设备基础信息，返回更新数据受影响行数) 
	* @param dto 其他设备基础信息对象
	* @param userName 操作用户名
	* @return int
	* @throws
	 */
	public ResultPojo editDeviceInfo(OtherDeviceInfoDto dto, String token,String userName);

	/**
	* @Title: removeDeviceInfoById 
	* @Description: TODO(根据设备编码删除设备，返回数据删除受影响行数) 
	* @param deviceCode 设备编码
	* @param userName 操作用户名
	* @return int
	* @throws
	 */
	public ResultPojo removeDeviceInfoById(String deviceCode, String token,String userName);

	/**
	* @Title: removeDeviceInfoByIds 
	* @Description: TODO(根据多个设备编码删除设备,返回数据删除受影响行数) 
	* @param deviceCodes 多个设备编码
	* @param userName 操作用户名
	* @return int
	* @throws
	 */
	public ResultPojo removeDeviceInfoByIds(String[] deviceCodes, String userName);
	
	/**
	* @Title: addIssuInfo 
	* @Description: TODO(装备派发到个人，返回派发到人的数据库受影响行数) 
	* @param dto 装备派发对象
	* @param userName 操作用户名
	* @return int 
	* @throws
	 */
	public ResultPojo addIssuInfo(IssuInfoDto dto, String userName);

	/**
	* @Title: editIssuInfo 
	* @Description: TODO(编辑装备绑定关系,返回更新数据库受影响行数) 
	* @param dto 装备派发对象
	* @param userName 操作用户名
	* @return int
	* @throws
	 */
	public ResultPojo editIssuInfo(IssuInfoDto dto, String userName);

	/**
	* @Title: removeIssuInfo 
	* @Description: TODO(移除装备绑定关系,返回更新数据库受影响行数) 
	* @param deviceCode 设备编码
	* @param deviceType 设备类型
	* @param userName 操作用户名
	* @return int
	* @throws
	 */
	public ResultPojo removeIssuInfo(String deviceCode,String userName ,String memo);


	/**
	* @Title: addRevertDeviceInfo 
	* @Description: TODO(退回设备操作，返回操作数据库受影响行数) 
	* @param dto 退回操作记录对象
	* @return int
	* @throws
	 */
	public ResultPojo addRevertDeviceInfo(OprRecordInfoDto dto);

	/**
	* @Title: addConsumeDeviceInfo 
	* @Description: TODO(领用设备操作，返回操作数据库受影响行数) 
	* @param dto 领用操作记录对象
	* @return int
	* @throws
	 */
	public ResultPojo addConsumeDeviceInfo(OprRecordInfoDto dto);

	/**
	* @Title: addScrapDeviceInfo 
	* @Description: TODO(报废设备操作，返回操作数据库受影响行数) 
	* @param dto 报废操作记录对象
	* @return int
	* @throws
	 */
	public ResultPojo addScrapDeviceInfo(OprRecordInfoDto dto);


	/**
	* @Title: addReturnDeviceInfo 
	* @Description: TODO(归还设备操作，返回操作数据库受影响行数) 
	* @param dto 归还设备操作对象
	* @return int
	* @throws
	 */
	public ResultPojo addReturnDeviceInfo(OprRecordInfoDto dto);

	/**
	* @Title: repairApply 
	* @Description: TODO(维修设备申请操作，返回操作数据库受影响行数) 
	* @param dto 维修设备操作对象
	* @return int
	* @throws
	 */
	public ResultPojo repairApply(OprRecordInfoDto dto);
	
	/**
	* @Title: repairRegister 
	* @Description: TODO(维修设备登记操作，返回操作数据库受影响行数) 
	* @param dto 维修设备操作对象
	* @return int
	* @throws
	 */
	public ResultPojo repairRegister(OprRecordInfoDto dto);

	/**
	* @Title: repairFinished
	* @Description: TODO(维修设备完成操作，返回操作数据库受影响行数) 
	* @param dto 维修设备操作对象
	* @return int
	* @throws
	 */
	public ResultPojo repairFinished(OprRecordInfoDto dto);
	
	/**
	* @Title: stateCount 
	* @Description: TODO(设备状态统计) 
	* @param adminDepartment 管理部门编码 (逗号分隔的部门id)
	* @return List<OtherDeviceStateCountDto>
	* @throws
	 */
	public ResultPojo stateCount(String adminDepartment);
	
	/**
	* @Title: deptCount 
	* @Description: TODO(部门状态统计) 
	* @param parentId    部门编码 (逗号分隔的部门id)
	* @param childrenIds 部门编码 (逗号分隔的部门id) 
	* @return List<Map<String, Object>>
	* @throws
	 */
	public ResultPojo deptCount(String parentId, String childrenIds);
}
